```vue
<template>
  <div class="body">
    <div>
      <h1>用户管理</h1>
      <el-table :data="currentPageData" style="width: 100%">
        <el-table-column label="头像" width="150">
          <template v-slot="{ row }">
            <el-image :src="row.photo" style="width: 50px; height: 50px;"></el-image>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="姓名" width="200" />
        <el-table-column prop="phone" label="电话" width="200" />
        <el-table-column prop="email" label="邮箱" width="200" />
        <el-table-column prop="registerTime" label="注册时间" width="200">
          <template v-slot="{ row }">
            {{ formatDate(row.registerTime) }}
          </template>
        </el-table-column>
        <el-table-column align="right">
          <template #header>
            <el-input v-model="search" placeholder="请输入搜索内容" />
          </template>
          <template #default="scope">
            <el-button size="small" type="primary" @click="handleEdit(scope.row)">
              查看详情
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[6]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="allData.length"
    />
  </div>

  <el-drawer v-model="drawer" title="I am the title" :with-header="false">
    <h2>详情</h2>
    <p>{{ selectedRow.feedback }}</p>
    <p style="text-align: right; font-size: 0.8em;">{{ selectedRow.name }}</p>
    <p style="text-align: right; font-size: 0.8em;">电话：{{ selectedRow.phone }}</p>
    <p style="text-align: right; font-size: 0.8em;">邮箱：{{ selectedRow.email }}</p>
    <div>
    <p style="text-align: right; font-size: 0.8em;">{{ selectedRow.registerTime }}</p>

  </div>
  </el-drawer>
</template>

<script setup>
import { ref, onMounted, computed } from "vue";
import request from "@/utils/request";

const search = ref("");
const tableData = ref([]);
const allData = ref([]);
const currentPage = ref(1);
const pageSize = ref(5);
const drawer = ref(false);
const selectedRow = ref(null);

const currentPageData = computed(() => {
  const start = (currentPage.value - 1) * pageSize.value;
  const end = start + pageSize.value;
  return filteredData.value.slice(start, end);
});

const handleSizeChange = (val) => {
  pageSize.value = val;
  currentPage.value = 1;
};

const handleCurrentChange = (val) => {
  currentPage.value = val;
};

const formatDate = (timestamp) => {
  const date = new Date(timestamp);
  return date.toLocaleString();
};

const queryPage = () => {
  request
    .get(`/manager/user?pageNum=${currentPage.value}&pageSize=${pageSize.value}`)
    .then((result) => {
      if (result.success) {
        const Data = result.data.records.sort((a, b) => a.id - b.id);
        tableData.value = Data.map((item) => {
          return {
            ...item,
            registerTime: formatDate(item.registerTime),
          };
        });
        allData.value = result.data.records;
      }
    });
};

onMounted(() => {
  queryPage();
});

const filteredData = computed(() => {
  if (!search.value) {
    return allData.value;
  }
  return allData.value.filter((data) =>
    Object.values(data).some((value) =>
      String(value).toLowerCase().includes(search.value.toLowerCase())
    )
  );
});

const handleEdit = (row) => {
  selectedRow.value = row;
  drawer.value = true;
};

const handleDelete = (row) => {
  // Handle delete logic here
};
</script>

<style scoped>
.body {
  padding: 20px;
}
</style>
```